#include "motor_a_svpwm_config.h"
// SVPWM框架
#include "svpwm.h"
// MOTORA定时器对象
#include "motor_a_tim2_pwm.h"


// 定义电机A的SVPWM结构体
Svpwm_Struct MotorA_SVPWM = 
{
    .u_alpha = 0,	// 阿尔法轴目标电压 	(最大值为母线电压 * sqrt(3) / 3)
    .u_beta = 0,	// 贝塔轴目标电压   	(最大值为母线电压 * sqrt(3) / 3)
    .u1 = 0,		// 用于扇区判断
    .u2 = 0,		// 用于扇区判断
    .u3 = 0,		// 用于扇区判断
    .t0 = 0,		// 0矢量作用时长
    .t1 = 0,		// 1矢量作用时长
    .t2 = 0,		// 2矢量作用时长
    .t3 = 0,		// 3矢量作用时长
    .t4 = 0,		// 4矢量作用时长
    .t5 = 0,		// 5矢量作用时长
    .t6 = 0,		// 6矢量作用时长
    .t7 = 0,		// 7矢量作用时长
    .ts = 100.0f,	// SVPWM周期
    .udc = 12.0f,	// 母线电压
    .sector = 0,	// 扇区索引
    .SetChannelAHighLeaveTime = MOTORA_SetChannelAHighLeaveTime,	// 一个SVPWM周期内A相绕组高电平时间(中央对齐方式)
    .SetChannelBHighLeaveTime = MOTORA_SetChannelBHighLeaveTime,	// 一个SVPWM周期内B相绕组高电平时间(中央对齐方式)
    .SetChannelCHighLeaveTime = MOTORA_SetChannelCHighLeaveTime,	// 一个SVPWM周期内C相绕组高电平时间(中央对齐方式)
};

/**
 * @brief   电机A生成SVPWM
 *
 * @param   none
 *
 * @return  none
 */
void MOTORA_SvpwmGenerate(float u_alpha, float u_beta)
{
    SvpwmContorol(&MotorA_SVPWM, u_alpha, u_beta);
}

/**
* @brief   获取电机A扇区
 *
 * @param   none
 *
 * @return  none
 */
uint8_t MOTORA_GetSVPWMSector(void)
{
    return GetSVPWMSector(&MotorA_SVPWM);
}

